package controll;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;

import modell.Construtora;

public class ConstrutoraHibernate implements IConstrutoraDAO {

	private Session sessao;
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Construtora> listar() {
		Criteria lista = sessao.createCriteria(Construtora.class);
		return lista.list();
	}

	@Override
	public void excluir(Construtora construtora) {
		this.sessao.delete(construtora);		
	}

	@Override
	public void salvar(Construtora construtora) {
		this.sessao.save(construtora);
	}

	@Override
	public void alterar(Construtora construtora) {
		this.sessao.update(construtora);
		
	}

	public Session getSessao() {
		return sessao;
	}

	public void setSessao(Session sessao) {
		this.sessao = sessao;
	}

	@Override
	public Construtora pesquisar(String string) {
		Query consulta = sessao.createQuery("from Construtora c where c.RazaoSocial like :RazaoSocial");
		consulta.setString("RazaoSocial", "%"+ string +"%");
		return (Construtora) consulta.uniqueResult();
	}

	@Override
	public Construtora pesquisarPorCodigo(Integer cod) {
		Query consulta = sessao.createQuery("from Construtora c where c.Id like :Id");
		consulta.setInteger("Id",cod);
		return (Construtora) consulta.uniqueResult();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Construtora> listarAtivos(boolean status) {
		String sql = " from Construtora c where c.Status = :Status";
		Query consulta = sessao.createQuery(sql);
		consulta.setBoolean("Status",status);
		return (List<Construtora>) consulta.list();
	}
}
